Providing clients with services that retrieve data from data sources that do not necessarily support the format required by the clients

ABSTRACT

A method and system for allowing clients to retrieve data from data sources that do not necessarily support the same protocols and formats as the clients. The clients issue service requests. A pre-processor responds to the requests by generating XML-structured request objects with unresolved links to the data sources that have information required by the clients. An XML processor resolves the links by issuing requests through one or more gateways. The gateways convert the responses received from the data sources into XML, which the XML processor uses to create XML composite response documents. A post-processor filters the XML response documents, and applies XSL stylesheets to transform the XML composite response documents into client-specific responses that conform to the format required by the clients. The client-specific responses are then sent to the clients.

RELATED APPLICATION; PRIORITY CLAIM

This application is related to and claims domestic priority under 35U.S.C. § 119(e) from prior Provisional Application Ser. No. 60/124,774,filed Mar. 17, 1999, entitled “SINGLE APPLICATION TO SERVICE ANARBITRARY CLIENT,” and naming as inventors MAGNUS M. LONNROTH, ROLANDSVENSSON and JOHAN SVENSSON, the entire disclosure of which is herebyincorporated by reference as if fully set forth herein.

FIELD OF THE INVENTION

The present invention relates to providing services to clients and, morespecifically, to providing clients with services that retrieve data fromdata sources that do not necessarily support the format required by theclients.

BACKGROUND OF THE INVENTION

The World Wide Web includes a network of servers on the Internet, eachof which is associated with one or more HTML (Hypertext Markup Language)pages. The HTML pages associated with a server provide information andhypertext links to other documents on that and (usually) other servers.Servers communicate with clients by using the Hypertext TransferProtocol (HTTP). The servers listen for requests from clients for theirHTML pages, and are therefore often referred to as “listeners”.

Users of the World Wide Web use a client program, referred to as abrowser, to request, decode and display information from listeners. Whenthe user of a browser selects a link on an HTML page, the browser thatis displaying the page sends a request over the Internet to the listenerassociated with the Universal Resource Locator (URL) specified in thelink. In response to the request, the listener transmits the requestedinformation to the browser that issued the request. The browser receivesthe information, presents the received information to the user, andawaits the next user request.

Traditionally, the information stored on listeners is in the form ofstatic HTML pages. Static HTML pages are created and stored at thelistener prior to a request from a web browser. In response to arequest, a static HTML page is merely read from storage and transmittedto the requesting browser. Currently, there is a trend to developlisteners that respond to browser requests by performing dynamicoperations. For example, a listener may respond to a request by issuinga query to a database, dynamically constructing a web page containingthe results of the query, and transmitting the dynamically constructedHTML page to the requesting browser.

Another trend is to expand Internet access to devices other thanconventional computer systems. For example, wireless phones have beendeveloped that include embedded web browsers. Due to size and costconstraints, the “micro browsers” contained in these devices have verylimited functionality relative to the browsers that have been developedfor full-fledged computer systems. However, devices with embedded microbrowsers are usable in circumstances under which using a conventionalcomputer system is impractical. In addition to having an embedded microbrowser, certain wireless phones support a two-way paging protocol knownas Short Message Stimulator (SMS). Using SMS, an SMS-enabled phone maysend a text message to another SMS-enabled phone.

A typical system in which web-enabled, SMS-enabled phones may be used isillustrated in FIG. 1. Referring to FIG. 1, system 100 includes awireless phone 102 connected to a network 104 though a wirelesscommunication medium. Network 104 may be, for example, a global digitalnetwork such as the Global System for Mobile Communications (GSM)network. SMS messages from the phone 102 may be sent through the network106 to a gateway 106 that includes a translator 112. Gateway 106 may be,for example, a NAMP server, available from Nokia, that is configured totranslate SMS messages to HTTP messages that can be sent over an IPnetwork. In the illustrated embodiment, gateway 106 translates SMSmessages from phone 102 and transmits them using HTTP over the Internet108 to a web server 110.

In response to the HTTP request from gateway 106, web server 110 sends aweb page back over the Internet 108 to gateway 106. Gateway 106 convertsthe web page to an SMS message and sends it to phone 102 through network104. Unfortunately, due to the limited capabilities of phone 102, theprocess of intelligently converting the web page into something that canbe delivered to the phone 102 can be extremely difficult.

According to one approach, gateway 106 includes filtering logic that isprogrammed with web-page-specific filtering rules. Such a filtering rulemay indicate, for example, that text that is to be included in the SMSmessage sent back to the phone 102 is to be obtained by extracting the53 characters that follow a particular sequence of tags within the webpage associated with the rule. The rule for a different web page couldspecify completely different criteria for located and extracting text.Even for the same web page, a particular filtering rule may cease toyield the desired result if the content or format of the web pagechanges. Consequently, using the web-page-specific filtering ruleapproach places an enormous burden on the manager of gateway 106 todesign the various filter rules and to keep them up to date for allpages that will be requested through gateway 106.

In an alternate approach, the filtering functionality is moved outsideof gateway 106 into a filtering box that is placed between the gateway106 and the Internet 108. The gateway 106 continues to believe that itis interacting with the web servers over the Internet 108, and continuesto translate between HTTP and SMS. However, all HTTP traffic sent to orsent from gateway 106 actually passes through the filtering box. Thefiltering rules applied by the filtering box may be specified by usersthemselves. Thus, the filtering box may filter the same web pagedifferently for different phone users based on how those phone usershave designed their filters. While this approach reduces the managerialburden of the gateway administrator, it largely shifts that burden tothe users themselves. Further, it only allows the phones to communicatewith one type of data source: HTTP servers. Other information sources,such as database systems, are not made accessible to phone 102 by thegateway 106.

Based on the foregoing, it is clearly desirable to improve thetechniques by which users of less-conventional clients gain access tothe World Wide Web. It is further desirable to provide techniques thatallow such clients to conveniently access other sources of information.

SUMMARY OF THE INVENTION

A method and system are provided for allowing clients to retrieve datafrom data sources that do not necessarily support the same protocols andformats as the clients. According to one aspect of the invention, apre-processor responds to the service requests of clients by generatingrequest objects. In one embodiment, the request objects areXML-structured documents with unresolved links to the data sources thathave information required by the clients. An XML processor resolves thelinks by issuing requests through one or more gateways. The gatewaysconvert the responses received from the data sources into XML, which theXML processor uses to create XML composite response documents. Apost-processor filters the XML response documents, and applies XSLstylesheets to transform the XML composite response documents intoclient-specific responses that conform to the format required by theclients. The client-specific responses are then sent to the clients.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings and in whichlike reference numerals refer to similar elements and in which:

FIG. 1 is a block diagram of a system that allows mobile phones tocommunicate with web servers;

FIG. 2 is a block diagram of a system configured according to anembodiment of the invention; and

FIG. 3 is a block diagram of a computer system that may be used toimplement embodiments of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

A method and system for allowing an arbitrary client to be serviced by asingle application is described. In the following description, for thepurposes of explanation, numerous specific details are set forth inorder to provide a thorough understanding of the present invention. Itwill be apparent, however, to one skilled in the art that the presentinvention may be practiced without these specific details. In otherinstances, well-known structures and devices are shown in block diagramform in order to avoid unnecessarily obscuring the present invention.

SYSTEM OVERVIEW

FIG. 2 is a block diagram that illustrates a system 200 that implementsan embodiment of the invention. System 200 is similar to system 100 inthat it includes a mobile device (phone 210) that communicates with agateway 202 over a network 212. According to one embodiment, phone 210is a WAP phone that is configured to support the display of WML pages.In such an embodiment, gateway 202 could, for example, be a WAP gatewayconfigured to communicate with phone 210 by sending WML pages throughnetwork 204 using the WAP protocol.

System 200 further includes a pre-processor 240, an XML processor 242,and a post processor 244. In general, pre-processor 240 receivesrequests and from clients and generates request objects based thereon.In one embodiment, those request objects take the form of XML documents.Those XML document “requests” are forwarded to XML processor 242 whichobtains XML documents from one or more XML sources to which XMLprocessor 242 is connected. As shall be described in greater detailhereafter, those XML sources may include one or more gateways connectedto non-XML sources. The XML documents that are created in response tothe requests are passed to post processor 244 to be filtered andformatted according to the needs of the requesting entity. Theconversion operation performed by post processor 244 is driven by XSLstyle sheets 250. Documents produced by post processor 244 are thendelivered to the requesting entity.

Each of the entities within system 200, and the operations thereof,shall now be described in greater detail.

SERVICE REQUESTS

Clients send requests to pre-processor 240. The nature and format of therequests will vary based on the type of the client. Each service requestidentifies the service that is requested, and may include any number ofparameter values associated with the request. The services specified inthe service requests that pre-processor 240 receives from clients mayvary widely in complexity. For example, one service may simply involveobtaining a particular piece of information from a single Web site. Yetanother service may involve running searches against hundreds of Websites, updating numerous databases based on the results of the searches,and transmitting email messages to hundreds of users to inform them thatthe database has been updated.

According to one embodiment, services may be defined as collections ofother services. By allowing services to be defined to include otherservices, an arbitrarily complex hierarchy of services may be supported.For example, a first service may be established for tracking packagessent by UPS. A second service may be established for tracking packagessent by FedEx. A third service may be established as a combination ofthe first and second services. A fourth service may be established toperform the third service and update a database to reflect the resultsproduced by the third service.

According to an embodiment, the set of services made available toclients varies on a per-user basis. Thus, the set of services that maybe requested by one client may be different than the services requestedby another client. In addition, certain services may be defined on aper-user basis. For example, a particular user may define a particularservice to be the combination of three existing services. Data abouteach user-defined services is stored and made accessible topre-processor 240 so that pre-processor 240 knows how to handle requestsfor those services. According to one embodiment, the services availableto each user, including user-defined services, are defined in aconfiguration database 254 that is accessible to pre-processor 240.

THE PRE-PROCESSOR

Pre-processor 240 is configured to receive and process requests fromclients. The protocols supported by pre-processor 240 dictate the formin which the requests must be received, and will vary fromimplementation to implementation. The present invention is not limitedto any particular type or number of protocols supported by pre-processor240. In the illustrated embodiment, pre-processor 240 supports HTTP andas well as two other protocols (shown as protocol A and protocol B).Through its support for HTTP requests, pre-processor 240 appears as aweb server to gateway 202, and is therefore able to receive HTTPrequests that originated as WAP requests issued from WAP-enableddevices.

Upon receiving a service request, the pre-processor 240 performs anyoperations that are required prior to servicing the request. Suchoperations may include, for example, performing security checks todetermine whether the client issuing the request is authorized to issuethe request. According to one embodiment, information about whichservices are authorized for each client are stored in configurationdatabase 254.

According to one embodiment, the pre-processor 240 also generates, basedon the request and information contained in configuration database 254,a request object in the form of an XML document. Specifically, thepre-processor 240 searches configuration database 254 to determine howto construct the XML document. The search may be performed, for example,based on the phone number and user id associated with the servicerequest. The information contained in configuration database for thatphone number/user-id combination may specify, for example, links to theinformation sources that correspond to the requested service, userpreferences, etc. The XML document generated by pre-processor 240 inresponse to a service request is referred to herein as a XML requestdocument. The XML request document includes links that identify theinformation sources that correspond to the requested service. As shallbe described in greater detail hereafter, the XML document may alsoinclude metadata, inserted by the pre-processor 240, that is used by thevarious components of post processor 244.

For the purpose of illustration, it shall be assumed that pre-processor240 receives a request that originated from phone 210, that phone 210 isa WAP phone, and that the request is for a service that determines thestatus of all of a particular user's packages. Upon verifying that phone210 is authorized to make the request, pre-processor 240 generates anXML request document. In the present example, the resulting XML requestdocument may include, for example, a link to a UPS package tracking website, a link to a FedEx package tracking web site, etc. The XML requestdocument thus created is then passed to the XML processor 242.

THE XML PROCESSOR

Upon receiving an XML request document from XML preprocessor 240, XMLprocessor 242 parses the XML request document. When the XML processor242 encounters unresolved links within the XML request document, XMLprocessor 242 resolves the links, typically by making calls through oneor more XML gateways.

XML gateways are mechanisms for converting between XML and messagesproduced by other types of data sources. For example, one XML gatewaymay be for the World Wide Web, and therefore convert between XML andHTML messages. Another XML gateway may be for a database system, andtherefore convert between XML and the protocol supported by the databasesystem. Yet another XML gateway may be for a mainframe computer, andconvert between XML and the message protocol supported by the mainframecomputer. The illustrated system 200 includes two XML gateways 232 and234. XML gateway 232 is configured to convert between XML and a protocolused by a database system. XML gateway 234 is configured to convertbetween XML and HTTP messages on the World Wide Web.

The XML gateways that are called by XML processor 242 in response to aparticular XML request document are the XML gateways that are connectedto the data sources that have the information identified in the XMLrequest document. For example, assume that the UPS and FedExpackage-tracking information is available over the World Wide Web. Inresponse to an XML request document to determine the status of a user'spackages, XML processor 242 makes calls to gateway 234. Gateway 234converts those requests into HTTP messages that request the requiredinformation from the appropriate sites on the World Wide Web. Inresponse to the HTTP requests, the information is supplied from thoseWeb sites back to the XML gateway 234 in the form of one or more HTMLdocuments. Gateway 234 converts the HTML documents to XML documents andsupplies the XML documents to XML processor 242. XML documents that aresupplied to XML processor 242 in response to XML requests are referredto herein as XML response documents. XML processor 242 forwards XMLresponse documents to post processor 244.

According to one embodiment, for each XML request, the XML processor 242creates a single “composite” XML response document by replacing links inthe XML request with the XML response documents received from theentities that correspond to the links. For example, assume that the XMLrequest document initially included one link to the UPS package trackingweb site and one link to the FedEx package tracking web site. Inresponse to receiving the XML request document, XML processor 242 wouldresolve each of the links in the XML request document by sendingrequests to those web sites through XML gateway 234. Those web sitesrespond to the requests using HTTP responses that are converted bygateway 234 into XML response documents.

The XML request is then transformed by the XML processor 242 into acomposite XML response document based on the information received backfrom those web sites. Specifically, the information received from theUPS package tracking Web site is converted to XML by XML gateway 234 andpassed to XML processor 242. XML processor 242 then replaces the link tothe UPS package tracking Web site in the XML request document with theinformation (now in XML format) received from the UPS package trackingWeb site. Similarly, the information received from the FedEx packagetracking Web site is converted to XML by XML gateway 234 and passed toXML processor 242. XML processor 242 then replaces the link to the FedExpackage tracking Web site in the XML request document with theinformation (now in XML format) received from the FedEx package trackingWeb site. The XML request document is transformed into a composite XMLresponse document by virtue of these replacements. The composite XMLresponse document produced by this process is passed from the XMLprocessor 242 to post processor 244.

In the package-tracking example, the service involved obtaininginformation from multiple sources that support the same protocol (i.e.multiple web sites). However, XML processor 242 may be connected to anynumber of different gateways, and a single service may involve obtaininginformation from multiple devices through multiple gateways. Forexample, a particular service may involve resolving one link byobtaining information from a web site through gateway 234, and resolvinga different link by obtaining information from a database throughgateway 232. Both the information from the web site and the informationfrom the database are converted into XML, which is used to replace thecorresponding links within the XML request document. Consequently, thecomposite XML response document may include, in XML structure,information obtained from sources that support very different formatsand protocols.

THE POST-PROCESSOR

The post-processor 244 receives XML responses from the XML processor.According to one embodiment, post-processor 244 includes a filteringunit 246 and an XSL engine 248. In general, the filtering unit 246selectively filters the XML response documents based on filtering rules,and the XSL engine 248 transforms the XML response documents, based onXSL stylesheets, to the format, layout, and document type desired forthe client for which the response is destined. The operations of thesecomponents are described in greater detail hereafter.

THE FILTERING UNIT

Filtering unit 246 receives the composite XML response documents fromXML processor 242 and selectively removes content from those documents.For example, assume that a client issues a request for information onthe World Wide Web about used cars for sale, and that the request is fora specific year, model and color of car. An XML request is generated bypre-processor 240 based on the request, and passed to XML processor 242.XML processor makes calls to an XML gateway connected to the World WideWeb and configured to translate between HTML and XML (e.g. XML gateway234). The XML gateway issues HTTP requests to one or more Web sites thatcontain used car sales information. For the purpose of illustration,assume that the search engines at those Web sites are able to searchbased on year and model criteria, but although the Web sites are able tosupply color information, the search engines do not support color as asearch criteria.

The XML gateway 234 receives the responses back from the. Web sites,typically in the form of HTML pages, and generates XML responsedocuments that contain the content of those HTML pages. In the presentexample, the XML response documents would include information about allcars that satisfied the specified year and model criteria, regardless oftheir color. The XML response documents are incorporated into the XMLrequest document to create the composite XML response which is receivedby filtering unit 246. Filtering unit 246 filters the composite XMLresponse based on the color specified in the initial request. Theresulting “filtered” XML response includes information on only thosecars that satisfy the color, year and model criteria

XSL STYLE SHEETS

XSL style sheets contain instructions about how each type of data itemthat can be contained in an XML document should be formatted prior totransmission to the client. For example, an XSL style sheet may indicatethat a particular type of data item (e.g. all “employee” fields) shouldbe displayed in a particular font type, font size, and color, with leftjustification. The formatting and layout rules contained in an XSL stylesheet may incorporate logic and conditional branches. For example, anXSL style sheet may specify that all “employee” fields are displayed inred if the employee age is over 50, in blue if between 20 and 50, and ingreen if under 20. The rules may take into account the context of dataitems as well. For example, an XSL rule may specify that employeeinformation is displayed as a table if the employee information is partof a purchase order.

According to one embodiment, each type of client device is associatedwith a corresponding, static, XSL style sheet. The XSL style sheetassociated with a device includes general instructions about how datashould be formatted for the device. Alternatively, separate XSL stylesheets may exist for each service for each device. Further, user's maybe allowed to customize their services, resulting in separate XSL stylesheets per user per service per device. Alternatively, XSL stylesheetsmay be generated on-the-fly, rather than statically. For example, an XSLstylesheet may be generated based on a service definition in response tothe service thus defined being requested by a particular user using aparticular type of client device.

According to one aspect of the invention, the commands contained in XSLstyle sheets 250 are expanded beyond formatting and layout instructionsto include transformation rules that cause the XML document to betransformed into another type of document or message. For example, anXSL style sheet may contain instructions for transforming XML documentsinto HTML documents. Another XSL style sheet may contain instructionsfor transforming XML documents into WML documents. Yet another XSL stylesheet may contain instructions for transforming XML documents into .pdfdocuments. The entity responsible for applying XSL style sheets to XMLdocuments is the XSL engine 248, which shall now be described.

THE XSL ENGINE

XSL engine 248 receives the filtered XML responses from the filteringunit 246, determines the XSL style sheets that apply to the XMLdocument, and uses the information in the applicable style sheets toconvert the XML document into the format required by the client to whichthe document is to be sent. The format of the resulting document willvary based on the XSL style sheets that are applied to the XML documentby the XSL engine 248.

In the case that the information request originated with a WAP enableddevice, the selected XSL style sheet causes the XML document to beconverted into a WML document to be sent to according to the WAPprotocol to the WAP device. The XSL stylesheets associated with othertypes of transformations would be used for other types of devices. Forexample, if the initial request came from a Web browser, then XSL engine248 would apply an XSL stylesheet that transforms XML documents intoHTML, and transform the composite XML response to an HTML document to besent using HTTP to the requesting client.

METADATA

According to one embodiment, information about the client and theservice requested is passed from pre-processor 240 to XML processor 242to post processor 244 in the form of metadata within the XMLrequest/composite response document. In general, the metadata includesinformation that drives the operation of the various components. Forexample, the metadata may contain data that identifies the particularclient that issued a request, the device type of the client, theprotocol supported by that client, the user currently using the client,the service requested by the client, and various parameters associatedwith the requested service.

The parameters associated with a request, such as the criteria specifiedin a search, may be used by filtering unit 246 to determine whatinformation to filter from the composite XML response. The device typeof the client, the protocol supported by the client, and the identity ofthe user that is using the client may all be used by XSL engine 248 todetermine which stylesheets to apply to the filtered XML response. Theidentity of the particular client may be used by the post processor 244to determine where to send the response documents produced by XSL engine248.

According to one embodiment, the metadata associated with a request isembedded by pre processor 240 in the XML request objects generated bypre-processor 240. As the XML request objects are passed from preprocessor 240 to XML processor 242 to be transformed into composite XMLresponses, the metadata is included. Similarly, the metadata is includedas the composite XML responses are passed from the XML processor 242 tothe filtering unit 246, and as the filtered XML responses are passed tothe XSL engine 248.

SERVICE DEFINITION

According to one embodiment, the administrator of XML processor 242communicates the gateways and data sources available to the XMLprocessor 242, and allows clients to define their own custom services.The custom services thus defined are stored in the configurationdatabase 254.

Various mechanisms may be used to allow the creation of user-customizedservices. For example, the gateways and data sources available to XMLprocessor 242 may be communicated in the form of service objecttemplates, where each service object template corresponds to a serviceprovided by the XML processor 242. The user may then modify the serviceobject template by supplying user-specific information, for example, theuser's frequent flyer number and the airlines preferred by the user. Theservice object template may then be stored in the configuration database254 to allow the user-customized service thus defined to be requested bythat particular user.

By allowing users to create customized services in this manner, usersmay avoid having to enter certain information every time they issue arequest for the service. This is particular helpful when the devicethrough which they are issuing the service request does not have a userinterface that supports easy data entry. For example, it would beonerous for a user to enter a frequent flyer number into a cell phoneuser interface every time the user desires to book a flight using thecell phone.

ARBITRARY-CLIENT APPLICATIONS

Typically, client-server software applications are designed for specificclients. For example, a software application that generates its userinterfaces by making calls to a particular operating system can only beused by clients that support that operating system. Similarly, asoftware application that generates its user interfaces in HTML can beused with clients that can execute conventional browsers.

According to one aspect of the invention, the document conversiontechniques described above are employed to allow software applicationsto work with any type of client for which XSL stylesheets may bedefined. For the purpose of explanation, applications thus configuredare referred to herein as arbitrary-client applications.

Referring again to system 200, any application that generates its userinterface in XML constitutes an XML source, such as XML source 230. Suchapplications can be used by any client for which an XSL stylesheet hasbeen created, since the XML interface document can be formatted by XSLengine 248 for display on any such client. Further, any applicationsthat generate a user interface that, while not in XML format, can beconverted to XML format by an XML source, also qualify asarbitrary-client applications when used in conjunction with system 200.

Arbitrary-client applications have a significant advantage over othertypes of applications in that the arbitrary-client application developerneed not create different versions of the application for each of thedifferent clients that will be used to operate the application. Forexample, the exact same application code may be controlled by aWML-enabled phone, a workstation-based web browser, and a set-top box.

XML-BASED APPLICATIONS

In the description given above, data is retrieved from data sources thatdo not themselves generate XML, and gateways are used to convert thedata to XML. However, data sources may be designed to directly generateXML. For such XML-based applications, no gateway would be required.Rather, XML processor 242 can be configured to interact with themdirectly. In FIG. 2, XML source 230 represents such an XML-basedapplication.

HARDWARE OVERVIEW

FIG. 3 is a block diagram that illustrates a computer system 300 uponwhich an embodiment of the invention may be implemented. Computer system300 includes a bus 302 or other communication mechanism forcommunicating information, and a processor 304 coupled with bus 302 forprocessing information. Computer system 300 also includes a main memory306, such as a random access memory (RAM) or other dynamic storagedevice, coupled to bus 302 for storing information and instructions tobe executed by processor 304. Main memory 306 also may be used forstoring temporary variables or other intermediate information duringexecution of instructions to be executed by processor 304. Computersystem 300 further includes a read only memory (ROM) 308 or other staticstorage device coupled to bus 302 for storing static information andinstructions for processor 304. A storage device 310, such as a magneticdisk or optical disk, is provided and coupled to bus 302 for storinginformation and instructions.

Computer system 300 may be coupled via bus 302 to a display 312, such asa cathode ray tube (CRT), for displaying information to a computer user.An input device 314, including alphanumeric and other keys, is coupledto bus 302 for communicating information and command selections toprocessor 304. Another type of user input device is cursor control 316,such as a mouse, a trackball, or cursor direction keys for communicatingdirection information and command selections to processor 304 and forcontrolling cursor movement on display 312. This input device typicallyhas two degrees of freedom in two axes, a first axis (e.g., x) and asecond axis (e.g., y), that allows the device to specify positions in aplane.

The invention is related to the use of computer system 300 forimplementing the techniques described herein. According to oneembodiment of the invention, those techniques are implemented bycomputer system 300 in response to processor 304 executing one or moresequences of one or more instructions contained in main memory 306. Suchinstructions may be read into main memory 306 from anothercomputer-readable medium, such as storage device 310. Execution of thesequences of instructions contained in main memory 306 causes processor304 to perform the process steps described herein. In alternativeembodiments, hard-wired circuitry may be used in place of or incombination with software instructions to implement the invention. Thus,embodiments of the invention are not limited to any specific combinationof hardware circuitry and software.

The term “computer-readable medium” as used herein refers to any mediumthat participates in providing instructions to processor 304 forexecution. Such a medium may take many forms, including but not limitedto, non-volatile media, volatile media, and transmission media.Non-volatile media includes, for example, optical or magnetic disks,such as storage device 310. Volatile media includes dynamic memory, suchas main memory 306. Transmission media includes coaxial cables, copperwire and fiber optics, including the wires that comprise bus 302.Transmission media can also take the form of acoustic or light waves,such as those generated during radio-wave and infra-red datacommunications.

Common forms of computer-readable media include, for example, a floppydisk, a flexible disk, hard disk, magnetic tape, or any other magneticmedium, a CD-ROM, any other optical medium, punchcards, papertape, anyother physical medium with patterns of holes, a RAM, a PROM, and EPROM,a FLASH-EPROM, any other memory chip or cartridge, a carrier wave asdescribed hereinafter, or any other medium from which a computer canread.

Various forms of computer readable media may be involved in carrying oneor more sequences of one or more instructions to processor 304 forexecution. For example, the instructions may initially be carried on amagnetic disk of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 300 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 302. Bus 302 carries the data tomain memory 306, from which processor 304 retrieves and executes theinstructions. The instructions received by main memory 306 mayoptionally be stored on storage device 310 either before or afterexecution by processor 304.

Computer system 300 also includes a communication interface 318 coupledto bus 302. Communication interface 318 provides a two-way datacommunication coupling to a network link 320 that is connected to alocal network 322. For example, communication interface 318 may be anintegrated services digital network (ISDN) card or a modem to provide adata communication connection to a corresponding type of telephone line.As another example, communication interface 318 may be a local areanetwork (LAN) card to provide a data communication connection to acompatible LAN. Wireless links may also be implemented. In any suchimplementation, communication interface 318 sends and receiveselectrical, electromagnetic or optical signals that carry digital datastreams representing various types of information.

Network link 320 typically provides data communication through one ormore networks to other data devices. For example, network link 320 mayprovide a connection through local network 322 to a host computer 324 orto data equipment operated by an Internet Service Provider (ISP) 326.ISP 326 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 328. Local network 322 and Internet 328 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 320and through communication interface 318, which carry the digital data toand from computer system 300, are exemplary forms of carrier wavestransporting the information.

Computer system 300 can send messages and receive data, includingprogram code, through the network(s), network link 320 and communicationinterface 318. In the Internet example, a server 330 might transmit arequested code for an application program through Internet 328, ISP 326,local network 322 and communication interface 318. In accordance withthe invention, one such downloaded application implements the techniquesdescribed herein.

The received code may be executed by processor 304 as it is received,and/or stored in storage device 310, or other non-volatile storage forlater execution. In this manner, computer system 300 may obtainapplication code in the form of a carrier wave.

In the foregoing specification, the invention has been described withreference to specific embodiments thereof. It will, however, be evidentthat various modifications and changes may be made thereto withoutdeparting from the broader spirit and scope of the inevntion. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

What is claimed is:
 1. A method for retrieving information from one ormore data sources, the method including the steps of: receiving, from aparticular type of client, a request for a service; wherein said requestfor said service is received at a system located separately from saidclient; wherein said request is sent by a particular user; within saidsystem generating, based on a first set of parameters, a request object;wherein said first set of parameters includes identity of said service;based on said request object, said system transmitting requests to oneor more data sources; at said system receiving responses to saidrequests from said one or more data sources in one or more formats otherthan a particular format; at said system converting said responses intosaid particular format; at said system generating, based on saidresponses, a composite response document in said particular format; atsaid system transforming said composite response document into aclient-formatted response based on a second set of parameters; whereinsaid second set of parameters includes identity of said particular typeof client; and at said system transmitting said client-formattedresponse to said particular user.
 2. The method of claim 1 furthercomprising the steps of embedding within said request object one or morefiltering criteria, and filtering data from said composite responsedocument based on said filtering criteria prior to transforming saidcomposite response document.
 3. The method of claim 2 wherein one ofsaid requests invokes a search mechanism at a data source based on afirst set of search criteria; and the step of filtering data includesfiltering data that originated from said data source based on a secondset of search criteria.
 4. The method of claim 1 wherein said first setof parameters for generating said request object includes identity ofsaid particular user.
 5. The method of claim 1 wherein: the step ofgenerating the request object includes generating filtering criteria;and the method includes filtering data from the composite responsedocument based on the filtering criteria before transforming thecomposite response document.
 6. The method of claim 1 wherein: the stepof receiving responses to said requests from said one or more datasources in one or more formats other than a particular format involvesreceiving responses to said requests from said one or more data sourcesin one or more formats other than XML; the step of converting saidresponses into said particular format involves converting responses intoXML; the step of generating a composite response document in saidparticular format involves generating a composite response document inXML; and the step of transforming said composite response document intoa client-formatted response involves transforming said compositeresponse document into a format other than XML.
 7. The method of claim 6wherein the step of transforming includes: identifying one or more XSLstylesheets based on said second set of parameters; and applying saidone or more XSL stylesheets to said composite response document.
 8. Themethod of claim 1 wherein: said one or more data sources include a firstdata source that supports a first protocol and is accessible through afirst gateway, and a second data source that supports a second protocoland is accessible through a second gateway; and the step of convertingsaid responses into said particular format includes said first gatewayconverting a response from said first data source to said particularformat; and said second gateway converting a response from said seconddata source to said particular format.
 9. The method of claim 8 whereinat least one of said first data source and said second data source is adatabase system.
 10. The method of claim 8 wherein at least one of saidfirst data source and said second data source is an HTTP server.
 11. Themethod of claim 10 wherein the client-formatted response is an HTMLdocument.
 12. The method of claim 6 wherein: the step of generating arequest object involves generating an XML request document that includesunresolved links; and the step of transmitting requests involvesresolving said unresolved links.
 13. The method of claim 12 wherein thestep of generating said composite response document involves replacingsaid unresolved links in said XML request document with XML datagenerated based on said responses from said one or more data sources.14. The method of claim 1 wherein said particular type of client is amobile phone.
 15. The method of claim 1 wherein: the method furthercomprises the steps of receiving data that indicates user-specificcustomizations to services; storing said data in a configurationdatabase; searching said configuration database for said user-specificcustomizations in response to receiving said request for said service;said first set of parameters used to generate said request objectincludes said user-specific customizations.
 16. The method of claim 1wherein: said one or more data sources include a first web siteaccessible through a gateway, and a second web site accessible throughsaid gateway; and the step of converting said responses into saidparticular format includes said gateway converting a first response fromsaid first web site to said particular format; and said gatewayconverting a second response from said second web site to saidparticular format.
 17. A system for transferring information betweendevices, the system comprising: a request preprocessor, which is locatedseparately from clients, configured to receive service requests fromsaid clients, generate request objects for said service requests, andpass said request objects to a request processor, which is locatedseparately from said clients; said request processor operatively coupledto said request preprocessor and to one or more gateways, said requestprocessor being configured to respond to said request objects bytransmitting requests to data sources through said one or more gateways;said one or more gateways operatively coupled between said requestprocessor and said data sources, said one or more gateways beingconfigured to translate between a particular format and one or moreother formats, convert said requests to said one or more other formatsprior to issuing said requests to said data sources, convert responsesfrom said data sources to said particular format, and pass saidresponses in said particular format to said request processor; whereinsaid request processor is further configured to generate compositeresponse documents in said particular format based on said responses,and to pass said composite response documents to a post processor; saidpost processor operatively coupled to said request processor, said postprocessor being configured to transform said composite responsedocuments from said particular format to client-specific responseshaving formats required by clients, and transmit said client-specificresponse documents to said clients.
 18. The system of claim 17 whereinsaid particular format is XML.
 19. The system of claim 18 wherein therequest objects are XML documents.
 20. The system of claim 18 whereinthe post processor includes an XSL engine that transforms said compositeresponse documents by selecting one or more XSL stylesheets based on afirst set of parameters, said first set of parameters including type ofthe clients; and applying said one or more XSL stylesheets.
 21. Thesystem of claim 17 wherein the pre-processor generates the requestobjects based on a particular set of parameters, said particular set ofparameters including identity of users that submit said servicerequests.
 22. A computer-readable medium bearing instructions forretrieving information from one or more data sources, thecomputer-readable medium including instructions for performing the stepsof: receiving, from a particular type of client, a request for aservice; wherein said request for said service is received at a systemlocated separately from said client; wherein said request is sent by aparticular user; within said system generating, based on a first set ofparameters, a request object; wherein said first set of parametersincludes identity of said service; based on the request object, saidsystem transmitting requests to one or more data sources; at said systemreceiving responses to said requests from said one or more data sourcesin one or more formats other than a particular format; at said systemconverting said responses into said particular format; at said systemgenerating, based on said responses, a composite response document insaid particular format; at said system transforming said compositeresponse document into a client-formatted response based on a second setof parameters; wherein said second set of parameters includes identityof said particular type of client; and at said system transmitting saidclient-formatted response to said particular user.
 23. Thecomputer-readable medium of claim 22 wherein said first set ofparameters for generating said request object includes identity of saidparticular user.
 24. The computer-readable medium of claim 22 wherein:the step of generating the request object includes generating filteringcriteria; the computer-readable medium includes instructions forfiltering data from the composite response document based on thefiltering criteria before transforming the composite response document.25. The computer-readable medium of claim 22 wherein: the step ofreceiving responses to said requests from said one or more data sourcesin one or more formats other than a particular format involves receivingresponses to said requests from said one or more data sources in one ormore formats other than XML; the step of converting said responses intosaid particular format involves converting responses into XML; the stepof generating a composite response document in said particular formatinvolves generating a composite response document in XML; and the stepof transforming said composite response document into a client-formattedresponse involves transforming said composite response document into aformat other than XML.
 26. The computer-readable medium of claim 25wherein the step of transforming includes: identifying one or more XSLstylesheets based on said second set of parameters; and applying saidone or more XSL stylesheets to said composite response document.
 27. Thecomputer-readable medium of claim 22 wherein: said one or more datasources include a first data source that supports a first protocol andis accessible through a first gateway, and a second data source thatsupports a second protocol and is accessible through a second gateway;and the step of converting said responses into said particular formatincludes said first gateway converting a response from said first datasource to said particular format; and said second gateway converting aresponse from said second data source to said particular format.
 28. Thecomputer-readable medium of claim 27 wherein at least one of said firstdata source and said second data source is a database system.
 29. Thecomputer-readable medium of claim 27 wherein at least one of said firstdata source and said second data source is an HTTP server.
 30. Thecomputer-readable medium of claim 29 wherein the client-formattedresponse is an HTML document.
 31. The computer-readable medium of claim25 wherein: the step of generating a request object involves generatingan XML request document that includes unresolved links; and the step oftransmitting requests involves resolving said unresolved links.
 32. Thecomputer-readable medium of claim 31 wherein the step of generating saidcomposite response document involves replacing said unresolved links insaid XML request document with XML data generated based on saidresponses from said one or more data sources.
 33. The computer-readablemedium of claim 22 wherein said particular type of client is a mobilephone.
 34. The computer-readable medium of claim 22 wherein: thecomputer-readable medium further comprises instructions for performingthe steps of receiving data that indicates user-specific customizationsto services; storing said data in a configuration database; searchingsaid configuration database for said user-specific customizations inresponse to receiving said request for said service; said first set ofparameters used to generate said request object includes saiduser-specific customizations.
 35. The computer-readable medium of claim22 wherein: said one or more data sources include a first web siteaccessible through a gateway, and a second web site accessible throughsaid gateway; and the step of converting said responses into saidparticular format includes said gateway converting a first response fromsaid first web site to said particular format; and said gatewayconverting a second response from said second web site to saidparticular format.
 36. The method of claim 1 wherein: said one or moredata sources include a plurality of data sources; and said compositeresponse document reflects information from each of said plurality ofdata sources.
 37. The computer-readable medium of claim 22 wherein: saidone or more data sources include a plurality of data sources; and saidcomposite response document reflects information from each of saidplurality of data sources.